package cn.jzq.kotoba.modules.principle;

/**
 * Single Responsibility Principle (SRP) - 单一职责原则
 * 一个类只负责一个功能领域中的相应职责
 * 永远不要让一个类存在多个改变的理由
 *
 * 这个接口包含了2个职责：第一个是连接管理(dial, hangup)；另一个是数据通信(send, recv)
 * 很多情况下，这2个职责没有任何共通的部分，它们因为不同的理由而改变，被不同部分的程序调用。
 * 所以它违反了SRP原则。
 */
public interface Modem {

    /**
     * 拨号
     *
     * @param pno p
     */
    void dial(String pno);

    /**
     * 挂断
     */
    void hangup();

    /**
     * 发送数据
     *
     * @param c c
     */
    void send(char c);

    /**
     * 接收数据
     *
     * @return
     */
    char recv();
}